﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Data.SqlClient;
using System.Data;

namespace Recetas_Web
{
    public partial class Mostrar_Recetas : System.Web.UI.Page
    {

        int CodReceta;

        protected void Page_Load(object sender, EventArgs e)
        {
            if (!IsPostBack)
            {
                llenar_ddlCategorias();
                ddlCategorias.Items.Insert(0, new ListItem(""));

                Datos obdatos = new Datos();
                string consultaBusqueda;
                
                int codCategoria;

                //VISIBILIDAD AGREGAR RECETAS
                if (Session["Name"] != null)
                {
                    hlAgregarReceta.Visible = true;
                    hlAgregarReceta2.Visible = true;
                }
                else {
                    hlAgregarReceta.Visible = false;
                    hlAgregarReceta2.Visible = false;
                }

                //VISIBILIDAD ADMINISTRAR CATEGORIAS
                if (Session["Name"] != null)
                {
                    int idUsuario = obtener_Id("Usuarios", "CodUsuario", (string)Session["Name"].ToString(), "Usuario");
                    DataTable tabla = new DataTable();
                    consultaBusqueda = "SELECT Tipo FROM Usuarios WHERE " + "CodUsuario = '" + idUsuario + "'";

                    tabla = obdatos.consultar_especifico(consultaBusqueda, "Usuarios");
                    string admin = tabla.Rows[0]["Tipo"].ToString();
                    if (admin == "True")
                    {
                        hlCategorias.Visible = true;
                    }
                    else {
                        hlCategorias.Visible = false;
                    }
                }

                //IMAGES BUTTONS PRINCIPAL
                string nc = Request.QueryString["nc"];
                if(nc != null)
                {
                    codCategoria = obtener_Id("Categorias", "CodCategoria", nc, "NombreCategoria"); 
                    consultaBusqueda = "SELECT CodReceta, NombreReceta, Dificultad, TiempoEstimado FROM Recetas WHERE CodCategoria = '" + codCategoria + "'";

                    obdatos.consultar(consultaBusqueda, "Recetas");
                    gvRecetas.DataSource = obdatos.ds.Tables[0];
                    gvRecetas.DataBind();

                    lblTitulo.Text = "BÚSQUEDA POR CATEGORIAS";
                    lblSubtitulo.Text = "RECETAS EN LA CATEGORÍA " + nc.ToUpper();
                }
                else
                {
                    gvRecetas.DataSource = null;
                    gvRecetas.DataBind();
                }
            }
        }

        private void llenar_ddlCategorias()
        {
            Datos obCategorias = new Datos();

            ddlCategorias.DataSource = obCategorias.consultar_general("Categorias");
            ddlCategorias.DataValueField = "CodCategoria";
            ddlCategorias.DataTextField = "NombreCategoria";
            ddlCategorias.DataBind();
        }

        private void buscar_recetas(string nombreReceta)
        {
            Datos obdatos = new Datos();
            string consultaBusqueda;
            
            if (nombreReceta != "")
            {
                consultaBusqueda = "SELECT CodReceta, NombreReceta, Dificultad, TiempoEstimado FROM Recetas WHERE NombreReceta LIKE '%" + nombreReceta + "%'";

                obdatos.consultar(consultaBusqueda, "Recetas");
                gvRecetas.DataSource = obdatos.ds.Tables[0];
                gvRecetas.DataBind();

                lblTitulo.Text = "BÚSQUEDA DE RECETAS";
            }
            else
            {
                lblTitulo.Text = "BÚSQUEDA DE RECETAS";
                gvRecetas.DataSource = null;
                gvRecetas.DataBind();
            }
        }

        private int obtener_Id(string Tabla, string columna_Id, string nombreColumna, string columna_nombreId)
        {
            Datos obDatos = new Datos();
            string ConsultaSQL = "SELECT * FROM " + Tabla + " WHERE " + columna_nombreId + " = '" + nombreColumna + "'";

            DataTable tabla = new DataTable();

            tabla = obDatos.consultar_especifico(ConsultaSQL, Tabla);

            int valor = Convert.ToInt32(tabla.Rows[0][columna_Id].ToString());

            return valor;
        }

        protected void iBtnBuscarReceta_Click(object sender, ImageClickEventArgs e)
        {
            buscar_recetas(txtNombreReceta.Text);
        }

        protected void iBtnBuscarxCategoria_Click(object sender, ImageClickEventArgs e)
        {
            Datos obdatos = new Datos();
            int codCategoria;
            string consultaBusqueda;

            if (ddlCategorias.SelectedItem.Text != "")
            {
                codCategoria = obtener_Id("Categorias", "CodCategoria", ddlCategorias.SelectedItem.Text, "NombreCategoria");
                consultaBusqueda = "SELECT CodReceta, NombreReceta, Dificultad, TiempoEstimado FROM Recetas WHERE CodCategoria = '" + codCategoria + "'";

                obdatos.consultar(consultaBusqueda, "Recetas");
                gvRecetas.DataSource = obdatos.ds.Tables[0];
                gvRecetas.DataBind();

                lblTitulo.Text = "BÚSQUEDA POR CATEGORIAS";
                lblSubtitulo.Text = "RECETAS EN LA CATEGORÍA " + ddlCategorias.SelectedItem.Text.ToUpper();
            }
            else
            {
                lblTitulo.Text = "BÚSQUEDA POR CATEGORIAS";
                lblSubtitulo.Text = "RECETAS EN LA CATEGORÍA " + ddlCategorias.SelectedItem.Text.ToUpper();
                gvRecetas.DataSource = null;
                gvRecetas.DataBind();
            }
        }

        protected void iBtnBuscarxDificultad_Click(object sender, ImageClickEventArgs e)
        {
            Datos obdatos = new Datos();
            string consultaBusqueda;

            if (ddlDificultad.SelectedItem.Text != "")
            {
                consultaBusqueda = "SELECT CodReceta, NombreReceta, Dificultad, TiempoEstimado FROM Recetas WHERE Dificultad = '" + ddlDificultad.SelectedItem.Text + "'";

                obdatos.consultar(consultaBusqueda, "Recetas");
                gvRecetas.DataSource = obdatos.ds.Tables[0];
                gvRecetas.DataBind();

                lblTitulo.Text = "BÚSQUEDA POR DIFICULTAD";
                lblSubtitulo.Text = "RECETAS DIFICULTAD: " + ddlDificultad.SelectedItem.Text.ToUpper();
            }
            else
            {
                lblTitulo.Text = "BÚSQUEDA POR DIFICULTAD";
                lblSubtitulo.Text = "RECETAS DIFICULTAD: " + ddlDificultad.SelectedItem.Text.ToUpper();
                gvRecetas.DataSource = null;
                gvRecetas.DataBind();
            }
        }

        protected void iBtnBuscarxTiempo_Click(object sender, ImageClickEventArgs e)
        {
            Datos obdatos = new Datos();
            string consultaBusqueda;

            if (ddlTiempo.SelectedItem.Text != "")
            {
                consultaBusqueda = "SELECT CodReceta, NombreReceta, Dificultad, TiempoEstimado FROM Recetas WHERE TiempoEstimado = '" + ddlTiempo.SelectedItem.Text + "'";

                obdatos.consultar(consultaBusqueda, "Recetas");
                gvRecetas.DataSource = obdatos.ds.Tables[0];
                gvRecetas.DataBind();

                lblTitulo.Text = "BÚSQUEDA POR TIEMPO";
                lblSubtitulo.Text = "RECETAS DE " + ddlTiempo.SelectedItem.Text.ToUpper();
            }
            else
            {
                lblTitulo.Text = "BÚSQUEDA POR TIEMPO";
                lblSubtitulo.Text = "RECETAS DE TIEMPO";
                gvRecetas.DataSource = null;
                gvRecetas.DataBind();
            }
        }

        protected void gvRecetas_SelectedIndexChanging(object sender, GridViewSelectEventArgs e)
        {

            CodReceta = Convert.ToInt32(gvRecetas.DataKeys[e.NewSelectedIndex].Value);
            Response.Redirect(string.Format("VerReceta.aspx?id={0}", CodReceta));
        }

        protected void gvRecetas_Load(object sender, EventArgs e)
        {
            //RECETA PRINCIPAL
            string abr = Request.QueryString["abr"];
            if (abr != null)
            {
                buscar_recetas(abr);
            }
            //else
            //{
            //    gvRecetas.DataSource = null;
            //    gvRecetas.DataBind();
            //}

            //CATEGORIAS PRINCIPAL
            Datos obdatos = new Datos();
            string consultaBusqueda;
            string ac = Request.QueryString["ac"];
            if (ac != null)
            {
                int codCategoria = obtener_Id("Categorias", "CodCategoria", ac, "NombreCategoria");
                consultaBusqueda = "SELECT CodReceta, NombreReceta, Dificultad, TiempoEstimado FROM Recetas WHERE CodCategoria = '" + codCategoria + "'";

                obdatos.consultar(consultaBusqueda, "Recetas");
                gvRecetas.DataSource = obdatos.ds.Tables[0];
                gvRecetas.DataBind();

                lblTitulo.Text = "BÚSQUEDA POR CATEGORIAS";
                lblSubtitulo.Text = "RECETAS EN LA CATEGORÍA " + ac.ToUpper();
            }
            //else
            //{
            //    gvRecetas.DataSource = null;
            //    gvRecetas.DataBind();
            //}

            //DIFICULTAD PRINCIPAL
            string ad = Request.QueryString["ad"];
            if (ad != null)
            {
                consultaBusqueda = "SELECT CodReceta, NombreReceta, Dificultad, TiempoEstimado FROM Recetas WHERE Dificultad = '" + ad + "'";

                obdatos.consultar(consultaBusqueda, "Recetas");
                gvRecetas.DataSource = obdatos.ds.Tables[0];
                gvRecetas.DataBind();

                lblTitulo.Text = "BÚSQUEDA POR DIFICULTAD";
                lblSubtitulo.Text = "RECETAS DIFICULTAD: " + ad.ToUpper();
            }
            //else
            //{
            //    gvRecetas.DataSource = null;
            //    gvRecetas.DataBind();
            //}

            //TIEMPO PRINCIPAL
            string at = Request.QueryString["at"];
            if (at != null)
            {
                consultaBusqueda = "SELECT CodReceta, NombreReceta, Dificultad, TiempoEstimado FROM Recetas WHERE TiempoEstimado = '" + at + "'";

                obdatos.consultar(consultaBusqueda, "Recetas");
                gvRecetas.DataSource = obdatos.ds.Tables[0];
                gvRecetas.DataBind();

                lblTitulo.Text = "BÚSQUEDA POR TIEMPO";
                lblSubtitulo.Text = "RECETAS DE " + at.ToUpper();
            }
            //else
            //{
            //    gvRecetas.DataSource = null;
            //    gvRecetas.DataBind();
            //}
        }

    }
}